<?php declare(strict_types=1);
//phpinfo();

// 获取php版本号
echo phpversion();

//$redis = new Redis();
//$redis->connect('127.0.0.1', 6379);
//try {
//    $info = $redis->ping();
//    var_dump($info);
//} catch (Exception $e) {
//    var_dump($e->getMessage());
//}
//
//$redis->set('name', '的卢科技');
//$redis->set('age', 2);
//var_dump($redis->get('age'));

// 基金收益
$yesterday1 = 735.19 + 37.68;
$hold1 = -21940.38 - 4480.36;
$total1 = -8318.04 - 3245.76;

echo "昨日收益：". $yesterday1;
echo "<br />";
echo "持有收益：". $hold1;
echo "<br />";
echo "累计收益：". $total1;

echo "今日游戏板块暴跌";
echo '<hr />';
//$a = 0;
//$b = 0;
//if ($a = 3 || $b = 3) {
//    var_dump($a);
//    $a++;
//    var_dump($a);
//    $b++;
//}
//
//echo $a.','.$b;

//var_dump(microtime(true) * 1000);
var_dump(mb_strlen("江疏影, hello")); // 10，一个中文占用一个字节
var_dump(strlen("江疏影, hello")); // 16
// 闭包函数
/**
 * 闭包函数是指在一个函数内部定义了另一个函数，并且内部函数可以访问外部函数的变量。
 * 闭包函数可以理解为一个封装了上下文环境的函数。
 * 在PHP中，闭包函数可以通过匿名函数的形式来定义，即不给函数命名，直接将函数定义赋值给一个变量。
 * @param $name
 * @return void
 */
//$str = function ($name) {
//    echo "Hello, {$name}";
//};
//$str("江疏影");

/*$a = 3131;
$b = 3131;
$callback = function () use ($a, $b) {
    $x = $y = 1;
    $x +=$a;
    $y +=$b;
    return $x+$y;
};
echo $callback();
*/
//$callback = function ($a, $b) {
//    $x = $y = 0;
//    $x +=$a;
//    $y +=$b;
//    return $x+$y.PHP_EOL;
//};
//echo $callback(3131,3131);
//echo $callback(1,1);
//echo $callback(1,1);

function add(){
    $x = 0;
    // use ($x) 和 use (&$x) 结果完全不一样，解释参见引用传递
    // use ($x) 中 变量$x，copy的是$x=0的副本
    // use (&$x) 中变量$x，指向的是return $x中变量指向的地址内容，所以结果完全不一样，这跟go语言有很区别
    return function ($y) use (&$x){
        $x += $y;
        return $x.PHP_EOL;
    };
}

$adder = add();
echo $adder(10); // 10
echo $adder(20); // 30
echo $adder(30); // 60


